<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>

    /* 
        如果在Promise中，在resolve和reject前使用了return，那么就永远不会决议    
    */

    // let a = new Promise(resolve=>{
    //     return 3;           
    //     resolve(5)
    // })


    // let a = new Promise(resolve => {
    //     resolve(5)
    // })
    // let b = a.then((v) => {
    //     console.log(v, 1.1)
    // }).then(() => { })

    // setTimeout(() => {
    //     console.log(b, 1.2);     // Promise {<fulfilled>} undefined    
    // })


    // a = new Promise((resolve, reject) => {
    //     reject(5)
    // })
    // b = a.then((v) => {
    //     console.log(v, 2.1)
    // }, () => { }).then(() => { })

    // setTimeout(() => {
    //     console.log(b, 2.2);     // Promise {<fulfilled>} undefined    说明默认往下传的值都是接收状态的，只要被接收了，而所携带的值要看上一层有没有返回值
    // })

    setTimeout(function () {
        console.log(1);
    }, 100);

    new Promise(function (resolve) {
        console.log(2);
        resolve();
        console.log(3);
    }).then(function () {
        console.log(4);
        new Promise((resove, reject) => {
            console.log(5);
            let i = 0;
            while (i < 500000) {
                i++
            }
            setTimeout(() => {
                console.log(6);
            }, 99);
        })
    });
    console.log(7);
    console.log(8);
</script>

</html>